package hotel;

import java.awt.*;
import java.awt.event.*;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.sql.*;

import javax.swing.*;

import com.itextpdf.text.DocumentException;

public class FinestraCliente extends JFrame implements ActionListener {
	private ResultSet rs = null;
	static ImageIcon iconax = new ImageIcon("Risorse/iconax.png"),
			mandaEmailImg = new ImageIcon("Risorse/mandaEmailImg.png"),pdf=new ImageIcon("Risorse/pdf1.png"),documento=new ImageIcon("Risorse/documento.png"),storico=new ImageIcon("Risorse/storico.png");
	private String numerodidocumento, indirizzo;
	private JPanel pannelloPrincipale, pFoto,pannelloDettagli,pannelloBottoni;
	private JLabel nomeL, cognomeL, datadinascitaL, comunedinascitaL,
			provinciadinascitaL, residenzaL, provinciadiresidenzaL,
			tipodocumentoL, numerodocumentoL, rilasciatodaL, datadirilascioL,
			datadiarrivoL, emailL;
	private JTextField nome, cognome, datadinascita, comunedinascita,
			provinciadinascita, residenza, provinciadiresidenza, tipodocumento,
			numerodocumento, rilasciatoda, datadirilascio, datadiarrivo, email;
	private JButton mostraDocumento, mostraStorico, inviaEmail, fotol;
	private JButton esporta;

	public FinestraCliente(String numerodidocumento) throws SQLException {
		this.numerodidocumento = numerodidocumento;
		Image immagineIc = Toolkit.getDefaultToolkit().getImage(
				"Risorse/cliente.png");
		setIconImage(immagineIc);
		setSize(500, 400);
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setLocation(350, 250);
		setVisible(true);
		setResizable(false);
		setLayout(new BorderLayout());
		pannelloPrincipale = new JPanel();
		final Image i = Toolkit.getDefaultToolkit().createImage(
				"Risorse/lente1.png");
		pFoto = new JPanel();
		pFoto.setPreferredSize(new Dimension(150, 100));
		pannelloDettagli=new JPanel();
		pannelloDettagli.setLayout(new GridLayout(13,1));
		pannelloBottoni=new JPanel();
		pannelloBottoni.setLayout(new GridLayout(2,1));
		pannelloPrincipale.setLayout(new BorderLayout());
		add(pannelloPrincipale, BorderLayout.CENTER);
		nomeL = new JLabel("Nome");
		nome = new JTextField(10);
		nome.setEditable(false);
		pannelloDettagli.add(nomeL);
		pannelloDettagli.add(nome);
		cognomeL = new JLabel("Cognome");
		cognome = new JTextField(10);
		cognome.setEditable(false);
		pannelloDettagli.add(cognomeL);
		pannelloDettagli.add(cognome);
		datadinascitaL = new JLabel("Data di nascita");
		datadinascita = new JTextField(10);
		datadinascita.setEditable(false);
		pannelloDettagli.add(datadinascitaL);
		pannelloDettagli.add(datadinascita);
		comunedinascitaL = new JLabel("Comune di nascita");
		comunedinascita = new JTextField(10);
		comunedinascita.setEditable(false);
		pannelloDettagli.add(comunedinascitaL);
		pannelloDettagli.add(comunedinascita);
		provinciadinascitaL = new JLabel("Provincia di nascita");
		provinciadinascita = new JTextField(10);
		provinciadinascita.setEditable(false);
		pannelloDettagli.add(provinciadinascitaL);
		pannelloDettagli.add(provinciadinascita);
		residenzaL = new JLabel("Residenza");
		residenza = new JTextField(10);
		residenza.setEditable(false);
		pannelloDettagli.add(residenzaL);
		pannelloDettagli.add(residenza);
		provinciadiresidenzaL = new JLabel("Provincia di residenza");
		provinciadiresidenza = new JTextField(10);
		provinciadiresidenza.setEditable(false);
		pannelloDettagli.add(provinciadiresidenzaL);
		pannelloDettagli.add(provinciadiresidenza);
		tipodocumentoL = new JLabel("Tipo documento");
		tipodocumento = new JTextField(10);
		tipodocumento.setEditable(false);
		pannelloDettagli.add(tipodocumentoL);
		pannelloDettagli.add(tipodocumento);
		numerodocumentoL = new JLabel("Numero documento");
		numerodocumento = new JTextField(10);
		numerodocumento.setEditable(false);
		pannelloDettagli.add(numerodocumentoL);
		pannelloDettagli.add(numerodocumento);
		rilasciatodaL = new JLabel("Rilasciato da");
		rilasciatoda = new JTextField(10);
		rilasciatoda.setEditable(false);
		pannelloDettagli.add(rilasciatodaL);
		pannelloDettagli.add(rilasciatoda);
		datadirilascioL = new JLabel("Data di rilascio");
		datadirilascio = new JTextField(10);
		datadirilascio.setEditable(false);
		pannelloDettagli.add(datadirilascioL);
		pannelloDettagli.add(datadirilascio);
		datadiarrivoL = new JLabel("Data di arrivo");
		datadiarrivo = new JTextField(10);
		datadiarrivo.setEditable(false);
		pannelloDettagli.add(datadiarrivoL);
		pannelloDettagli.add(datadiarrivo);
		emailL = new JLabel("E-Mail");
		email = new JTextField(10);
		email.setEditable(false);
		pannelloDettagli.add(emailL);
		pannelloDettagli.add(email);
		riempiFinestra();
		if (!indirizzo.equals("null")) {
			fotol = new JButton(
					new ImageIcon(new ImageIcon(indirizzo).getImage()
							.getScaledInstance(100, 100, Image.SCALE_SMOOTH)));
			fotol.setContentAreaFilled(false);
			fotol.setFocusable(false);
			fotol.addMouseListener(new MouseAdapter() {
				public void mouseEntered(MouseEvent e) {
					fotol.setCursor(Toolkit.getDefaultToolkit()
							.createCustomCursor(i, new Point(0, 0), "ciao"));
				}

				public void mouseClicked(MouseEvent e) {
					if (e.getClickCount() == 1) {
						if (!indirizzo.equals("null")) {
							try {
								indirizzo.replace('/', '\\');
								Desktop.getDesktop().open(new File(indirizzo));
							} catch (IOException e1) {
								e1.printStackTrace();
							}
						}
					}
				}
			});
			pFoto.add(fotol);
			add(pFoto, BorderLayout.EAST);
		}
		mostraDocumento = new JButton("Mostra Documento");
		pannelloBottoni.add(mostraDocumento);
		mostraDocumento.setIcon(documento);
		mostraDocumento.addActionListener(this);
		mostraStorico = new JButton("Mostra Storico");
		mostraStorico.setIcon(storico);
		mostraStorico.setFocusable(false);
		mostraStorico.addActionListener(this);
		pannelloBottoni.add(mostraStorico);
		inviaEmail = new JButton("Invia Email");
		inviaEmail.addActionListener(this);
		inviaEmail.setIcon(mandaEmailImg);
		pannelloBottoni.add(inviaEmail);
		esporta = new JButton("Esporta");
		esporta.setIcon(pdf);
		esporta.addActionListener(this);
		pannelloBottoni.add(esporta);
		setTitle("Cliente " + nome.getText() + " " + cognome.getText());
		pannelloPrincipale.add(pannelloDettagli,BorderLayout.CENTER);
		pannelloPrincipale.add(pannelloBottoni,BorderLayout.SOUTH);
	}

	private void riempiFinestra() throws SQLException {
		int i = 1;
		String query = "SELECT nome,cognome,DATE_FORMAT(datadinascita,'%d/%m/%Y'),comunedinascita,provinciadinascita,residenza,provinciadiresidenza,tipodidocumento,numerodidocumento,rilasciatoda,DATE_FORMAT(datadirilascio,'%d/%m/%Y'),DATE_FORMAT(datadiarrivo,'%d/%m/%Y'),indirizzo,email FROM CLIENTI where numerodidocumento='"
				+ numerodidocumento + "'";
		rs = GraficaHotel.database.stat.executeQuery(query);
		if (rs.next()) {
			nome.setText(rs.getString(i++));
			cognome.setText(rs.getString(i++));
			datadinascita.setText(rs.getString(i++));
			comunedinascita.setText(rs.getString(i++));
			provinciadinascita.setText(rs.getString(i++));
			residenza.setText(rs.getString(i++));
			provinciadiresidenza.setText(rs.getString(i++));
			tipodocumento.setText(rs.getString(i++));
			numerodocumento.setText(rs.getString(i++));
			rilasciatoda.setText(rs.getString(i++));
			datadirilascio.setText(rs.getString(i++));
			datadiarrivo.setText(rs.getString(i++));
			indirizzo = rs.getString(i++);
			email.setText(rs.getString(i++));
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == mostraDocumento) {
			if (!indirizzo.equals("null")) {
				try {
					indirizzo.replace('/', '\\');
					Desktop.getDesktop().open(new File(indirizzo));
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			} else {
				JOptionPane.showMessageDialog(null,
						"Nessun documento per questo cliente!", "Attenzione",
						JOptionPane.WARNING_MESSAGE, iconax);
				this.setVisible(true);
			}
		} else if (e.getSource() == mostraStorico) {
			new FinestraStorico(numerodocumento.getText());
		} else if (e.getSource() == inviaEmail) {
			try {
				Desktop.getDesktop().mail(new URI("mailto:" + email.getText()));
			} catch (IOException | URISyntaxException exc) {
				exc.printStackTrace();
			}
		}else if(e.getSource()==esporta){
			try {
				new CreaSchedaClientePDF(GraficaHotel.database,numerodocumento.getText());
			} catch (FileNotFoundException | DocumentException | SQLException e1) {
				e1.printStackTrace();
			} catch (MalformedURLException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		}
	}

}
